Give all search entries an icon
authorMatthias Clasen <mclasen@redhat.com>
Fri, 23 Oct 2020 16:19:31 +0000 (12:19 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 23 Oct 2020 16:19:31 +0000 (12:19 -0400)
This was first requested for the search entry in
GtkDropDown, but it is better to be consistent and
give every search entry an icon.

Related: #3291

docs/reference/gtk/images/search-entry.png
gtk/gtkdropdown.c
gtk/gtksearchentry.c

index 22549fc093b23505de205e5d8413a42f4e265150..4ecdbfe8c4dc21bb67bde2ee01272c912890c255 100644 (file)
Binary files a/docs/reference/gtk/images/search-entry.png and b/docs/reference/gtk/images/search-entry.png differ
index d33f1e9524a784670f3d452c69ce4c71155825f3..80dc7a1ae6afe7bd0d4882f0aa65a6fb5c46b161 100644 (file)
@@ -251,8 +251,6 @@ gtk_drop_down_dispose (GObject *object)
 {
   GtkDropDown *self = GTK_DROP_DOWN (object);
 
-  gtk_widget_unparent (gtk_widget_get_first_child (self->search_entry));
-
   g_clear_pointer (&self->popup, gtk_widget_unparent);
   g_clear_pointer (&self->button, gtk_widget_unparent);
 
@@ -596,19 +594,11 @@ set_default_factory (GtkDropDown *self)
 static void
 gtk_drop_down_init (GtkDropDown *self)
 {
-  GtkWidget *icon;
-
   g_type_ensure (GTK_TYPE_BUILTIN_ICON);
   g_type_ensure (GTK_TYPE_LIST_ITEM_WIDGET);
 
   gtk_widget_init_template (GTK_WIDGET (self));
 
-  icon = g_object_new (GTK_TYPE_IMAGE,
-                       "accessible-role", GTK_ACCESSIBLE_ROLE_NONE,
-                       "icon-name", "system-search-symbolic",
-                       NULL);
-  gtk_widget_insert_after (icon, self->search_entry, NULL);
-
   set_default_factory (self);
 }
 
index 78268113c88dd854f2d3272a62fbf411e77b669f..5c227f68538fd4a23c7097fd57c3336842f5f608 100644 (file)
@@ -160,6 +160,8 @@ gtk_search_entry_finalize (GObject *object)
 
   gtk_editable_finish_delegate (GTK_EDITABLE (entry));
 
+  gtk_widget_unparent (gtk_widget_get_first_child (GTK_WIDGET (entry)));
+
   g_clear_pointer (&entry->entry, gtk_widget_unparent);
   g_clear_pointer (&entry->icon, gtk_widget_unparent);
 
@@ -549,8 +551,15 @@ activate_cb (GtkText  *text,
 static void
 gtk_search_entry_init (GtkSearchEntry *entry)
 {
+  GtkWidget *icon;
   GtkGesture *press;
 
+  icon = g_object_new (GTK_TYPE_IMAGE,
+                       "accessible-role", GTK_ACCESSIBLE_ROLE_NONE,
+                       "icon-name", "system-search-symbolic",
+                       NULL);
+  gtk_widget_set_parent (icon, GTK_WIDGET (entry));
+
   entry->entry = gtk_text_new ();
   gtk_widget_set_parent (entry->entry, GTK_WIDGET (entry));
   gtk_widget_set_hexpand (entry->entry, TRUE);